package com.xinzhi.service.impl;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.xinzhi.mapper.BumenMapper;
import com.xinzhi.pojo.dto.DtoBumen;
import com.xinzhi.pojo.dto.Dtoaddbumen;
import com.xinzhi.pojo.dto.Dtokoufen;
import com.xinzhi.service.BumenService;
import com.xinzhi.utils.RedisUtils;
import com.xinzhi.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class bumenServiceimpl implements BumenService {
    @Autowired
    private BumenMapper bumentaizhangMapper;
    @Autowired
    private RedisUtils redisUtils;
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;


    /**
     * 部门台账填写页面全部查询接口
     * @return
     */
    public Result selectbumenAll() {

        List<DtoBumen> dtoBumen = bumentaizhangMapper.querystuden8();

        if (dtoBumen.isEmpty()) {
                // 数据库没有返回数据
                return Result.error("没有这条数据");
            } else {
                // 返回数据
                return Result.ok(dtoBumen);
            }

        }


    /**
     * 部门台账填写新增接口
     * @param dtoBumen
     * @return
     */

    @Override
    public Result addbumen(Dtoaddbumen dtoBumen) {
//        String userKey = "user:" + dtoBumen.getImplementation();// 或者使用用户的ID作为键名的一部分
//        String existingUserJson = (String) redisUtils.get(userKey);
//        if (StrUtil.isNotBlank(existingUserJson)) {
//            return Result.ok("existingUserJson");
//        }

        // 用户既不存在 Redis 中也不存在数据库中，执行插入操作
        int adduser = bumentaizhangMapper.addbumen(dtoBumen);
        if (adduser > 0) {
            // 插入成功后将用户信息存入 Redis
//            redisUtils.set(userKey, JSONUtil.toJsonStr(dtoBumen));
            return Result.ok("新增成功");
        }

        return Result.error("添加失败");
    }


    /**
     * 部门台账页面修改接口
     * @param dtoBumen
     * @return
     */
    @Override
    public Result updatebumen(Dtoaddbumen dtoBumen) {

        // 检查Redis的示例代码（伪代码）
        String userKey = "user:" + dtoBumen.getScore();
        redisUtils.get(userKey);
        try {
            Thread.sleep(1000); // 1秒的延迟（根据需要调整）
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            // 处理中断异常
        }
        int updatebumen = bumentaizhangMapper.updatebumen(dtoBumen);

        if (updatebumen > 0) {
            // 如果更新成功，则继续从Redis中删除缓存
            redisTemplate.delete(userKey);
            return Result.ok("更新成功");
        }
        return Result.error("更新失败");
        // 删除Redis缓存的示例代码（伪代码）
    }

    /**
     * 部门台账页面逻辑删除接口
     * @param id
     * @return
     */
    @Override
    public Result deletebumen(Integer id) {
            int updateappraisal = bumentaizhangMapper.updatedeleted(id);
            return updateappraisal > 0 ? Result.ok("删除成功") : Result.error("删除失败");
    }

    /**
     * 部门台账页面根据年份查询接口
     * @param yearnumber
     * @return
     */
    @Override
    public Result selectbumen(String yearnumber) {
        if (yearnumber == null ){
            return Result.error("查询条件不能为空");
        }
        List<DtoBumen> bumenyear = bumentaizhangMapper.querystuden9(yearnumber);
        if (bumenyear == null){
            return Result.error("没有相关数据");
        }
        return bumenyear != null ? Result.ok(bumenyear) : Result.error("没有相关数据");
    }





}